/**
 * 股票数据源策略接口
 * 定义数据源需要实现的方法
 */

/**
 * 数据源基类
 */
class StockDataSource {
	/**
	 * 搜索股票
	 * @param {String} keyword - 搜索关键词
	 * @returns {Promise<Object>} 返回格式化的股票列表
	 */
	async searchStock(keyword) {
		throw new Error('子类必须实现 searchStock 方法');
	}

	/**
	 * 获取分时K线数据
	 * @param {Object} params - 请求参数
	 * @param {String} params.stockCode - 股票代码
	 * @param {String} params.period - 周期（m5/m15/m30/m60）
	 * @param {Number} params.count - 数据条数
	 * @returns {Promise<Object>} 返回格式化的K线数据
	 */
	async getMinuteKLine(params) {
		throw new Error('子类必须实现 getMinuteKLine 方法');
	}

	/**
	 * 获取其他K线数据（日K/周K/月K）
	 * @param {Object} params - 请求参数
	 * @param {String} params.stockCode - 股票代码
	 * @param {String} params.period - 周期（day/week/month）
	 * @param {String} params.startDate - 开始日期
	 * @param {String} params.endDate - 结束日期
	 * @param {Number} params.count - 数据条数
	 * @param {String} params.adjust - 复权方式（qfq/hfq）
	 * @returns {Promise<Object>} 返回格式化的K线数据
	 */
	async getOtherKLine(params) {
		throw new Error('子类必须实现 getOtherKLine 方法');
	}
}

export default StockDataSource;

